/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package BoardGameLanguage;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Field</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link BoardGameLanguage.Field#getBoard <em>Board</em>}</li>
 *   <li>{@link BoardGameLanguage.Field#getFigure <em>Figure</em>}</li>
 *   <li>{@link BoardGameLanguage.Field#getRight <em>Right</em>}</li>
 *   <li>{@link BoardGameLanguage.Field#getLeft <em>Left</em>}</li>
 *   <li>{@link BoardGameLanguage.Field#getAbove <em>Above</em>}</li>
 *   <li>{@link BoardGameLanguage.Field#getBelow <em>Below</em>}</li>
 *   <li>{@link BoardGameLanguage.Field#getRow <em>Row</em>}</li>
 *   <li>{@link BoardGameLanguage.Field#getColumn <em>Column</em>}</li>
 * </ul>
 * </p>
 *
 * @see BoardGameLanguage.BoardGameLanguagePackage#getField()
 * @model
 * @generated
 */
public interface Field extends EObject {
	/**
	 * Returns the value of the '<em><b>Board</b></em>' container reference.
	 * It is bidirectional and its opposite is '{@link BoardGameLanguage.Board#getFields <em>Fields</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Board</em>' container reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Board</em>' container reference.
	 * @see #setBoard(Board)
	 * @see BoardGameLanguage.BoardGameLanguagePackage#getField_Board()
	 * @see BoardGameLanguage.Board#getFields
	 * @model opposite="fields" transient="false"
	 * @generated
	 */
	Board getBoard();

	/**
	 * Sets the value of the '{@link BoardGameLanguage.Field#getBoard <em>Board</em>}' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Board</em>' container reference.
	 * @see #getBoard()
	 * @generated
	 */
	void setBoard(Board value);

	/**
	 * Returns the value of the '<em><b>Figure</b></em>' reference.
	 * It is bidirectional and its opposite is '{@link BoardGameLanguage.Figure#getField <em>Field</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Figure</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Figure</em>' reference.
	 * @see #setFigure(Figure)
	 * @see BoardGameLanguage.BoardGameLanguagePackage#getField_Figure()
	 * @see BoardGameLanguage.Figure#getField
	 * @model opposite="field"
	 * @generated
	 */
	Figure getFigure();

	/**
	 * Sets the value of the '{@link BoardGameLanguage.Field#getFigure <em>Figure</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Figure</em>' reference.
	 * @see #getFigure()
	 * @generated
	 */
	void setFigure(Figure value);

	/**
	 * Returns the value of the '<em><b>Right</b></em>' reference.
	 * It is bidirectional and its opposite is '{@link BoardGameLanguage.Field#getLeft <em>Left</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Right</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Right</em>' reference.
	 * @see #setRight(Field)
	 * @see BoardGameLanguage.BoardGameLanguagePackage#getField_Right()
	 * @see BoardGameLanguage.Field#getLeft
	 * @model opposite="left"
	 * @generated
	 */
	Field getRight();

	/**
	 * Sets the value of the '{@link BoardGameLanguage.Field#getRight <em>Right</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Right</em>' reference.
	 * @see #getRight()
	 * @generated
	 */
	void setRight(Field value);

	/**
	 * Returns the value of the '<em><b>Left</b></em>' reference.
	 * It is bidirectional and its opposite is '{@link BoardGameLanguage.Field#getRight <em>Right</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Left</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Left</em>' reference.
	 * @see #setLeft(Field)
	 * @see BoardGameLanguage.BoardGameLanguagePackage#getField_Left()
	 * @see BoardGameLanguage.Field#getRight
	 * @model opposite="right"
	 * @generated
	 */
	Field getLeft();

	/**
	 * Sets the value of the '{@link BoardGameLanguage.Field#getLeft <em>Left</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Left</em>' reference.
	 * @see #getLeft()
	 * @generated
	 */
	void setLeft(Field value);

	/**
	 * Returns the value of the '<em><b>Above</b></em>' reference.
	 * It is bidirectional and its opposite is '{@link BoardGameLanguage.Field#getBelow <em>Below</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Above</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Above</em>' reference.
	 * @see #setAbove(Field)
	 * @see BoardGameLanguage.BoardGameLanguagePackage#getField_Above()
	 * @see BoardGameLanguage.Field#getBelow
	 * @model opposite="below"
	 * @generated
	 */
	Field getAbove();

	/**
	 * Sets the value of the '{@link BoardGameLanguage.Field#getAbove <em>Above</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Above</em>' reference.
	 * @see #getAbove()
	 * @generated
	 */
	void setAbove(Field value);

	/**
	 * Returns the value of the '<em><b>Below</b></em>' reference.
	 * It is bidirectional and its opposite is '{@link BoardGameLanguage.Field#getAbove <em>Above</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Below</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Below</em>' reference.
	 * @see #setBelow(Field)
	 * @see BoardGameLanguage.BoardGameLanguagePackage#getField_Below()
	 * @see BoardGameLanguage.Field#getAbove
	 * @model opposite="above"
	 * @generated
	 */
	Field getBelow();

	/**
	 * Sets the value of the '{@link BoardGameLanguage.Field#getBelow <em>Below</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Below</em>' reference.
	 * @see #getBelow()
	 * @generated
	 */
	void setBelow(Field value);

	/**
	 * Returns the value of the '<em><b>Row</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Row</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Row</em>' attribute.
	 * @see #setRow(int)
	 * @see BoardGameLanguage.BoardGameLanguagePackage#getField_Row()
	 * @model ordered="false"
	 * @generated
	 */
	int getRow();

	/**
	 * Sets the value of the '{@link BoardGameLanguage.Field#getRow <em>Row</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Row</em>' attribute.
	 * @see #getRow()
	 * @generated
	 */
	void setRow(int value);

	/**
	 * Returns the value of the '<em><b>Column</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Column</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Column</em>' attribute.
	 * @see #setColumn(int)
	 * @see BoardGameLanguage.BoardGameLanguagePackage#getField_Column()
	 * @model required="true" ordered="false"
	 * @generated
	 */
	int getColumn();

	/**
	 * Sets the value of the '{@link BoardGameLanguage.Field#getColumn <em>Column</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Column</em>' attribute.
	 * @see #getColumn()
	 * @generated
	 */
	void setColumn(int value);

} // Field
